在 python3.x 中,默認採用編碼格式為UTF-8
在 python 中,有兩種常用的字符串類型,為bytes 和 str。str(Unicode字符)、bytes(二進制數據)
str(在內存中以Unicode表示)
如果在網路上傳輸,或者保存進硬碟,就需要把 str 傳換成 bytes 類型
str.encode([encoding = 'utf8'][, error = 'strict'])
str : 表示要轉換的字符串
encoding='utf8' : 可選參數,用於指定進行轉碼時採用的字符編碼
error = 'strict' : 用於指定錯誤的處理方式,有ignore, replace, xmlcharrefreplace......等,strict為默認值
ex = "人生苦短,我愛Python"
ex = ex.encode('utf8')
print(ex)
# b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe6\x84\x9bPython'
# 使用utf-81編碼,轉換後的二進制數據
ex = b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe6\x84\x9bPython'
print(ex.decode())
# 人生苦短,我愛Python
:package:在Python的開發過程中,很多時候都要對字符串做相應的處理,比如拼接、擷取、格式化......
fir = "人生苦短"
sec = "我愛Python"
print(fir + " , " + sec)
# 人生苦短 , 我愛Python
fir = "人生苦短"
sec = "我愛Python"
num = 55
print(fir + " , "+ sec + num)
# TypeError: can only concatenate str (not "int") to str
所以說,一定要轉換成相同的型態
在Python中,在默認的情況下,一個漢字佔3個字節,數字及其它基本上都佔1個字節
str_test = "人生苦短,我愛Python"
print(str_test)
# 13
然而,在默認的情況下,使用len()函數,所有字符都認為是1字節
str_test = "人生苦短,我愛Python"
print(len(str_test.encode('utf-8')))
# 25
# 3 * 6 + 7 = 25
str_test = 'abcdefg'
print(str_test[0:3:2])
# ac
如果在超出範圍的情況下,可以用try......except IndexError解決
str.split(sep, maxsplit)
用於指定分割字符串,可以包含多個字符
可選參數,用於指定分割的次數,如果不指定或者為-1,則分割次數沒有限制,否則返回結果列表元素各數最多為maxsplit+1
str_test = "abc \ndefg"
str_test.split()
print(str_test)
# abc
# defg
# 在某些情況下,需要分開進行輸入
nums = list(map(int, input().split()))
print(nums)
# input 0 1 2 3 4 5 6 7 8 9
# output [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
str_new = string.join(iterable)
str_test = ["a", "b", "c"]
print("-".join(str_test))
# a-b-c
str_test = "aaaabb"
print(str_test.count("a"))
# 4
# 返回首次出現的下標
str_test = "aaaabb"
print(str_test.find("b"))
# 4
# 返回首次出現的下標
str_test = "aaaabb"
print(str_test.index("b"))
# 4
# 確認開頭首字母
str_test = "abcabcabc"
print(str_test.startswith("b"))
# False
# 確認末尾字母
str_test = "abcabcabc"
print(str_test.endswith("c"))
# True
str_test = "wsdjahAKSJD"
print(str_test.lower())
# wsdjahaksjd
str_test = "wsdjahAKSJD"
print(str_test.upper())
# WSDJAHAKSJD
可以使用strip()函數去除前後的空格
當然還有lstrip()和rstrip()......
*這裡的特殊字符是指\t、\r、\n等
使用strip()函數
# 掐頭去尾
str_test = " ssd "
print(str_test)
# ssd
print(str_test.strip())
# ssd
# l => left
# r => right
str_test = " ssd "
print(str_test.lstrip())
# ssd
print(str_test.rstrip())
# ssd
# str.format(args)
print("{} {} {:.5f}".format(50, "中", 20.5555556))
#c 50 中 20.55556